//
//  AlarmTableView.swift
//  SBSafetyApp
//
//  Created by Lina on 2023/4/22.
//

import Foundation
import UIKit

class AlarmTableView: UIView {
    let tableView = UITableView(frame: .zero, style: .plain)

    var datas : [AlarmsModal?] = [] {
        didSet {
            tableView.tableShowEmpty(withDataCount: datas.count, enumS: .alarm)
            tableView.reloadData()
        }
    }
    
    var needReload:(() -> ())?
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    // MARK: - Setup
    
    func setupUI() {
        tableView.separatorStyle = .none
        tableView.showsVerticalScrollIndicator = false
        tableView.backgroundColor = .bg
        tableView.dataSource = self
        tableView.delegate = self
        addSubview(tableView)
        tableView.snp.makeConstraints { (make) in
            make.left.right.top.bottom.equalToSuperview()
        }
    }
}

extension AlarmTableView: UITableViewDataSource, UITableViewDelegate {
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return datas.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let data = datas[indexPath.row]
        let ID : String = "AlarmTableCell"
            
        var cell = tableView.dequeueReusableCell(withIdentifier: ID)
        if cell == nil {
            cell = AlarmTableCell(style: .subtitle, reuseIdentifier: ID)
        }

        (cell as? AlarmTableCell)?.reload(withModal: data)
        return cell!
    }
    
    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return 120
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if let data = datas[indexPath.row] {
            getFirstViewController()?.navigationController?.pushViewController(AlarmDetailVC(withModal: data), animated: true)
        }
    }
}
